export enum QuestionType {
  Radio = 'Radio',
  TrueFalse = 'TrueFalse',
  Checkbox = 'Checkbox',
  FillBlank = 'FillBlank',
  MultipleBlank = 'MultipleBlank',
  Textarea = 'Textarea',
}

export enum ExamAnswerMode {
  /**
   * 只有一个选项
   */
  onlyOne = 'onlyOne',
  /**
   * 精确匹配，全部选对得分
   */
  selectAll = 'selectAll',
  /**
   * 答对几项得几分，打错不得分(单选、多选、下拉) 答对几项得几分(填空)
   */
  selectCorrect = 'selectCorrect',
  /**
   * 部分选中，按选中分值算分/按选中计分
   */
  select = 'select',
  /**
   * 人工打分
   */
  manual = 'manual',
  /**
   * 不计分
   */
  none = 'none',
  /**
   * 使用AI评分
   */
  ai='ai'
}
export enum ExamMatchRule {
  /**
   * 与答案完全相同才得分
   */
  completeSame='completeSame',
  /**
   * 包含答案，多个答案分号间隔
   */
  contain='contain',

}
export interface TemplateSchema {
  id: string;

  /*题目标题*/
  title?: string;

  /*题目描述*/
  description?: string;

  /*题目类型*/
  type?: QuestionType;

  /*显示顺序*/
  orderNum?: number;

  /*属性*/
  attribute?: Attribute;

  /*子节点*/
  children?: Array<TemplateSchema>;
  /**
   * 当前 schema 标签
   */
  tags?: Array<string>;

}

export interface TemplateVO {
  /**
   * 题目ID
   */
  templateId: string ;

  /**
   * 题库ID
   */
  repoId: string | number;

  /**
   * 题目类型
   */
  questionType: QuestionType;

  /**
   * 题目标签
   */
  tag: Array<string>;

  /**
   * 显示顺序
   */
  orderNum: number;

  /**
   * 题目名称
   */
  templateName: string;

  /**
   * 题目模板
   */
  template: TemplateSchema;

  /**
   * 答案
   */
  answer: string;

  /**
   * 分值
   */
  score: number;

  /**
   * 备注信息
   */
  remark: string;

}

export interface TemplateForm extends BaseEntity {
  /**
   * 题目ID
   */
  templateId?: string | number;

  /**
   * 题库ID
   */
  repoId?: string | number;

  /**
   * 题目类型
   */
  questionType?: QuestionType;

  /**
   * 题目标签
   */
  tag?: Array<string>;

  /**
   * 难度
   */
  difficulty?: string;

  /**
   * 显示顺序
   */
  orderNum?: number;

  /**
   * 题目名称
   */
  templateName?: string;

  /**
   * 题目模板
   */
  template?: TemplateSchema;

  /**
   * 答案
   */
  answer?: string;

  /**
   * 分值
   */
  score?: number;

  /**
   * 备注信息
   */
  remark?: string;

}


export interface GenerateTemplateForm {
  /*出题要求*/
  requirements: string;

  children: Array<ChildrenDTO>;
}

interface ChildrenDTO {
  /*题目类型*/
  type: string;
  /*题目数量*/
  num: number;
}


export interface TemplateUpdateForm {
  /**
   * 题目ID
   */
  templateId: string | number;

  /**
   * 题库ID
   */
  repoId: string | number;

  /**
   * 题目类型
   */
  questionType: QuestionType;

  /**
   * 题目标签
   */
  tag: Array<string>;

  /**
   * 显示顺序
   */
  orderNum: number;

  /**
   * 题目名称
   */
  templateName: string;

  /**
   * 题目模板
   */
  template?: TemplateSchema;

  /**
   * 答案
   */
  answer: string;

  /**
   * 分值
   */
  score: number;

  /**
   * 备注信息
   */
  remark: string;
}


export interface Attribute {
  /*解析*/
  examAnalysis?: string;
  /*计分模式*/
  examAnswerMode?: ExamAnswerMode;
  /*分值*/
  examScore?: number;
  /*当前答案*/
  examCorrectAnswer?: string | undefined;
  /*答案匹配规则*/
  examMatchRule?: ExamMatchRule;
  /*选项列数*/
  columns?:number;
}

export interface TemplateQuery extends PageQuery {

  /**
   * 题目ID
   */
  templateId?: string | number;

  /**
   * 题库ID
   */
  repoId?: string | number;

  /**
   * 题目类型
   */
  questionType?: QuestionType;

  /**
   * 题目标签
   */
  tag?: Array<string>;

  /**
   * 显示顺序
   */
  orderNum?: number;

  /**
   * 题目名称
   */
  templateName?: string;

  /**
   * 日期范围参数
   */
  params?: any;
}




